package com.example.mapper;

import com.example.entity.StoreProduct;
import com.example.vo.StoreProductVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 店长商品Mapper
 */
@Mapper
public interface StoreProductMapper {
    
    /**
     * 插入店长商品
     */
    int insert(StoreProduct storeProduct);
    
    /**
     * 根据ID删除店长商品
     */
    int deleteById(Long id);
    
    /**
     * 更新店长商品
     */
    int updateById(StoreProduct storeProduct);
    
    /**
     * 根据ID查询店长商品
     */
    StoreProduct selectById(Long id);
    
    /**
     * 根据店长ID和供货商品ID查询
     */
    StoreProduct selectByStoreManagerAndSupplyProduct(@Param("storeManagerId") Long storeManagerId, 
                                                      @Param("supplyProductId") Long supplyProductId);
    
    /**
     * 分页查询店长商品（带关联信息）
     */
    List<StoreProductVO> selectPageWithDetails(@Param("storeManagerId") Long storeManagerId,
                                               @Param("keyword") String keyword,
                                               @Param("status") Integer status);
    
    /**
     * 查询店长所有上架商品（用于用户购买）
     */
    List<StoreProductVO> selectOnlineProducts(@Param("storeManagerId") Long storeManagerId,
                                              @Param("keyword") String keyword);
    
    /**
     * 更新商品库存
     */
    int updateStock(@Param("id") Long id, @Param("currentStock") Integer currentStock);
    
    /**
     * 检查店长是否已上架该商品
     */
    int countByStoreManagerAndSupplyProduct(@Param("storeManagerId") Long storeManagerId, 
                                            @Param("supplyProductId") Long supplyProductId);
    
    /**
     * 查询店长已进货但未上架的商品列表
     */
    List<StoreProductVO> selectAvailableProductsForShelf(@Param("storeManagerId") Long storeManagerId,
                                                         @Param("keyword") String keyword);
}